#ifndef PARSING_LL1_H
#define PARSING_LL1_H
#include"../../../stl/include/map.h"
#include"../../../stl/include/stack.h"
#include<string.h>
#include <stdio.h>  
#include <stdlib.h> 
// #include <unistd.h>  // Linux/macOS  
#include <direct.h>  // Windows 
#ifdef _WIN32
#include <windows.h>
#endif

typedef struct Parsing_LL1{
    /*common data */
    //预测分析表
    Map* parsingTable;
    //表行名
    char*line;
    //字符串头部索引
    int o_index;
    //待处理元素栈
    Stack* table_stack;
    int idx;
    const char*input;
    /*
    时间：2025.03.31
    作者：zdw
    函数名：init_table
    作用：初始化预测分析表
    参数说明：self操作对象，filePath文法规则文件，toolsPath工具文件路径
    */ 
    void (*init_table)(void *self,const char*filePath,char *toolsPath);
    /*
    时间：2025.03.31
    作者：zdw
    函数名：to_parsing
    作用：输出分析结果
    参数说明：self操作对象
    */ 
    void (*to_parsing)(void *self);
}Parsing_LL1;
/*
时间：2025.03.31
作者：zdw
函数名：parsing_ll1
作用：初始实例
*/
Parsing_LL1 *parsing_ll1();
#endif